package com.xzmzhp.service.finance.impl;

import com.github.pagehelper.PageInfo;
import com.xzmzhp.constant.ReturnConstant;
import com.xzmzhp.dao.finance.FinanceTypeMapper;
import com.xzmzhp.pojo.finance.FinanceType;
import com.xzmzhp.service.finance.FinanceTypeService;
import com.xzmzhp.utils.return_tool.ReturnData;
import com.xzmzhp.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 王源(xm)
 * @Date: 2021/11/5 14:31
 * @Description: 财务类型表数据逻辑实现类
 */
@Service
public class FinanceTypeServiceImpl implements FinanceTypeService {

    @Autowired
    private FinanceTypeMapper financeTypeMapper;

    /**
     * 根据id查询财务类型信息
     *
     * @param financeTypeId     财务类型id
     * @param financeTypeStatus 财务类别状态
     * @return 相关财务类型信息
     */
    @Override
    public FinanceType findFinanceTypeById(Integer financeTypeId, String financeTypeStatus) {
        FinanceType financeType = financeTypeMapper.findFinanceTypeById(financeTypeId, financeTypeStatus);
        if (financeType != null) {
            return financeType;
        } else {
            return null;
        }
    }

    /**
     * 根据财务类型名称查询财务信息
     *
     * @param financeTypeName   财务类型名称
     * @param financeTypeStatus 财务类别状态
     * @return 相关财务类型信息
     */
    @Override
    public List<FinanceType> findFinanceTypeByName(String financeTypeName, String financeTypeStatus) {
        List<FinanceType> list = financeTypeMapper.findFinanceTypeByName(financeTypeName, financeTypeStatus);
        if (StringUtils.isNotEmpty(list)) {
            return list;
        } else {
            return null;
        }
    }

    /**
     * 验证财务类型是否存在
     *
     * @param financeTypeName 财务类型名称
     * @return 财务信息
     */
    @Override
    public FinanceType checkFinanceTypeByName(String financeTypeName) {
        FinanceType financeType = financeTypeMapper.checkFinanceTypeByName(financeTypeName);
        if (financeType != null) {
            return financeType;
        } else {
            return null;
        }
    }

    /**
     * 查询所有财务类型信息
     *
     * @return 财务类型信息
     */
    @Override
    public ReturnData findFinanceType() {
        List<FinanceType> list = financeTypeMapper.findFinanceType();
        if (StringUtils.isNotEmpty(list)) {
            PageInfo<FinanceType> pageInfo = new PageInfo<>(list);
            return ReturnData.ok(list, pageInfo.getTotal());
        } else {
            return ReturnData.error(ReturnConstant.FAIL, "没有找到财务类型信息");
        }
    }

    /**
     * 查询所有财务类型信息
     *
     * @return 财务类型信息
     */
    @Override
    public List<FinanceType> findFinanceTypeList() {
        List<FinanceType> list = financeTypeMapper.findFinanceType();
        if (StringUtils.isNotEmpty(list)) {
            return list;
        } else {
            return null;
        }
    }

    /**
     * 添加财务类型信息
     *
     * @param financeType 财务类型信息
     * @return 影响行数
     */
    @Override
    public Integer addFinanceType(FinanceType financeType) {
        Integer i = financeTypeMapper.addFinanceType(financeType);
        if (i > 0) {
            return i;
        } else {
            return 0;
        }
    }

    /**
     * 修改财务类型信息
     *
     * @param financeType 财务类型
     * @return 影响条数
     */
    @Override
    public Integer updateFinanceType(FinanceType financeType) {
        Integer i = financeTypeMapper.updateFinanceType(financeType);
        if (i > 0) {
            return i;
        } else {
            return 0;
        }
    }

    /**
     * 删除财务类型信息
     *
     * @param financeTypeId 财务类型id
     * @return 影响条数
     */
    @Override
    public Integer deleteFinanceType(int financeTypeId) {
        Integer i = financeTypeMapper.deleteFinanceType(financeTypeId);
        if (i > 0) {
            return i;
        } else {
            return 0;
        }
    }
}
